﻿Imports Negocio
Imports Entidad
Imports Utilitario
Public Class frmAgregarCodBarra

    Dim servicio1 As New ArticuloNegocio
    Dim servicio2 As New UnidadMedidaNegocio
    Dim servicio3 As New BarraNegocio
    Dim util As New Utiles

    Dim codArticulo As String = ""
    Dim codBarra As String = ""
    Dim nivel As String = ""
    Dim codUnidad As String = ""
    Dim cantidad As String = ""
    Dim espacio As String = ""
    Dim tamanio As String = ""
    Dim observacion As String = ""
    Dim apcCodigo As String = ""
    Dim articulo As New Articulo

    Sub New(codArticulo As String, codBarra As String, nivel As String, codUnidad As String, cantidad As String, espacio As String, tamanio As String, observacion As String, apcCodigo As String)

        ' Llamada necesaria para el diseñador.
        InitializeComponent()

        ' Agregue cualquier inicialización después de la llamada a InitializeComponent().
        Me.codArticulo = codArticulo
        Me.codBarra = codBarra
        Me.nivel = nivel
        Me.codUnidad = codUnidad
        Me.cantidad = cantidad
        Me.espacio = espacio
        Me.tamanio = tamanio
        Me.observacion = observacion
        Me.apcCodigo = apcCodigo
    End Sub

    Sub inicializar()
        cboNivel.SelectedIndex = 0
        cboTamanio.SelectedIndex = 0
        cargarUnidades()

        articulo = servicio1.obtenerArticulo(codArticulo)

        If articulo Is Nothing Then
            util.mensaje("Ocurrió un error de conexión. Intentelo nuevamente.")
            Exit Sub
        End If

        If articulo.ART_Codigo = "-1" Then
            util.mensaje("Artículo no existe.")
            Exit Sub
        End If

        lblArticulo.Text = articulo.ART_Codigo
        lblDescripcion.Text = articulo.ART_Descripcion
        lblUnidad.Text = articulo.UNM_Descripcion
        lblProveedor.Text = "(" & articulo.PROV_Codigo & ") " & articulo.PROV_Descripcion
        txtCodBarra.Text = codBarra
        If codBarra <> "" Then
            txtCodBarra.Enabled = False
            chkBarra.Visible = False
            btnLimpiar.Visible = False
        End If
        cboNivel.SelectedItem = nivel
        cboMedida.SelectedValue = codUnidad
        txtCantidad.Text = cantidad
        txtEspacio.Text = espacio
        cboTamanio.SelectedItem = tamanio
        txtObservacion.Text = observacion
    End Sub

    Sub cargarUnidades()
        Dim dt As DataTable = servicio2.obtenerUnidadesMedida()

        With cboMedida
            .ValueMember = "UNM_Codigo"
            .DisplayMember = "UNM_Abreviatura"
            .DataSource = dt
        End With
    End Sub

    Sub limpiar()
        txtEspacio.Text = ""
        cboTamanio.SelectedIndex = 0
        txtObservacion.Text = ""
        txtCantidad.Text = "0"
        cboMedida.SelectedIndex = 0
        cboNivel.SelectedIndex = 0
        txtCodBarra.Text = ""
        chkBarra.Checked = False
    End Sub

    Private Sub frmAgregarCodBarra_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        inicializar()
    End Sub

    Private Sub btnLimpiar_Click(sender As System.Object, e As System.EventArgs) Handles btnLimpiar.Click
        limpiar()
    End Sub

    Private Sub btnCancelar_Click(sender As System.Object, e As System.EventArgs) Handles btnCancelar.Click
        DialogResult = Windows.Forms.DialogResult.OK
    End Sub

    Private Sub chkBarra_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles chkBarra.CheckedChanged
        If chkBarra.Checked = True Then
            txtCodBarra.Enabled = False
        Else
            txtCodBarra.Enabled = True
            txtCodBarra.Focus()
        End If
    End Sub

    Private Sub btnGuardar_Click(sender As System.Object, e As System.EventArgs) Handles btnGuardar.Click
        If MsgBox("¿Está seguro de realizar este registro?", MsgBoxStyle.Question + MsgBoxStyle.YesNo + MsgBoxStyle.DefaultButton2, "Mensajes al Usuario") = MsgBoxResult.Yes Then
            If validacion() = True Then
                Dim codigoBarra As String = txtCodBarra.Text.Trim

                If chkBarra.Checked = True Then
                    codigoBarra = servicio3.obtenerCodigoAutogenerado()
                End If

                Dim barra As New ArticuloProveedorBarra(CIA, lblArticulo.Text, articulo.PROV_Codigo, codigoBarra, cboMedida.SelectedValue.ToString, CInt(txtCantidad.Text.Trim), cboNivel.SelectedItem.ToString, txtEspacio.Text, cboTamanio.SelectedItem.ToString, txtObservacion.Text.Trim, apcCodigo)

                If servicio3.verificarExistenciaBarra(CIA, lblArticulo.Text.Trim, articulo.PROV_Codigo, codigoBarra, apcCodigo).Tables(0).Rows.Count > 0 Then
                    If servicio3.actualizarCodigoBarra(barra) = True Then
                        util.mensaje("Actualización exitosa.")
                    Else
                        util.mensaje("Ocurrió un error. Intentelo nuevamente.")
                    End If
                Else
                    If servicio3.registrarCodigoBarra(barra) = True Then
                        util.mensaje("Registro exitoso.")
                        DialogResult = Windows.Forms.DialogResult.OK
                    Else
                        util.mensaje("Ocurrió un error. Intentelo nuevamente.")
                    End If
                End If
            End If
        End If
    End Sub

    Function validacion() As Boolean
        If chkBarra.Visible = True Then
            If chkBarra.Checked = False Then
                If txtCodBarra.Text = "" Then
                    util.mensaje("Ingrese un código de barra.")
                    Return False
                    Exit Function
                End If
            End If
        End If
        If cboNivel.SelectedIndex = 0 Then
            util.mensaje("Elija un nivel.")
            Return False
            Exit Function
        End If
        If cboMedida.SelectedIndex = 0 Then
            util.mensaje("Elija una unidad de medida.")
            Return False
            Exit Function
        End If
        If CInt(txtCantidad.Text) = 0 Then
            util.mensaje("Cantidad tiene que ser mayor a cero.")
            Return False
            Exit Function
        End If
        If txtEspacio.Text.Trim = "" Then
            util.mensaje("Ingrese un espacio.")
            Return False
            Exit Function
        End If
        If cboTamanio.SelectedIndex = 0 Then
            util.mensaje("Elija un tamaño.")
            Return False
            Exit Function
        End If
        Return True
    End Function

End Class